package com.yj.idempotence.thread;

/**
 * 创建一个全局的静态 ThreadLocal 变量，存储 String 类型变量；
 * 创建两个线程，分别为 threadOne 和 threadTwo；
 * threadOne 进行 set 方法设置，设置完成后沉睡 5000 毫秒，苏醒后进行 get 方法打印；
 * threadTwo 进行 set 方法设置，设置完成后直接 get 方法打印，打印完成后调用 remove 方法，并打印 remove 方法调用完毕语句；
 * 开启线程 threadOne 和 threadTwo ；
 * 执行程序，并观察打印结果。
 */
public class Demo02 {

    private static final ThreadLocal<String> thread_local = new ThreadLocal<>();


    public static void main(String[] args) {
        Thread threadOne = new Thread(()->{
            thread_local.set("ThreadOne`s local value");
            try {
                Thread.sleep(5000);
                System.out.println(thread_local.get());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },"threadOne");
        Thread threadTwo = new Thread(()->{
            thread_local.set("ThreadTwo` local value");
            System.out.println(thread_local.get());
            thread_local.remove();
            System.out.println("remove 方法调用完毕语句");
        },"threadTwo");
        threadOne.start();
        threadTwo.start();
    }
}
